1. Field of the Invention
The present invention generally relates to the transmission and storage of digital video information and, more particularly, to positive, negative and mixed filtering of MPEG-2 compliant table sections for storage.
2. Description of the Prior Art
Since its invention, television has been recognized to have great economic and social potential. At the present time, when wide bandwidth transmission systems such as coaxial cable systems are becoming relatively ubiquitous, much of the economic and social potential derives from the variety of programming or other information which can be provided to users and the willingness of users to pay for access to particular information, such as pay-per-view movies at a time convenient to them.
While coaxial cable distribution systems provide very substantial numbers of choices of information available as well as some capacity for so-called upstream signalling and even Internet communications of increased speed relative to telephone/modem arrangements, there is increased demand for wider variety and flexibility of programming which can only be provided, at the present state of the art, through digital communications using extremely broad band transmission media such as microwave, satellite and fiber optic links.
Even with these broad band communication media, the required capacity, the volume and variety of data contained in common programming requires extreme compression to support the number of separate communications which may be required to be transmitted over a communication link of finite although substantial capacity. Accordingly, a compression convention referred to as MPEG (Motion Picture Experts Group has been promulgated in several versions (e.g. MPEG-2) and has become an industry standard. This standard is extremely flexible and adaptive to transmission content to allow extreme compression.
In order to implement this compression convention, a so-called “set-top box” (STB) has been developed (referred to as a target decoder under the MPEG standard) and, at the present time, has a well-established architecture. The processing of which the STB is capable is, of course, very substantial since MPEG compression is very complex. While little storage is generally required (or, in many cases, even possible due to substantially real-time processing constraints) for decoding within the MPEG decoder architecture, public familiarity with the functions of video cassette recorders (VCRs) has led to a demand for substantial amounts of storage to support similar functions in the STB. Decompression is generally performed in several stages and allows convenient storage in a coded form which is substantially compressed relative to the final displayable format.
Storage capacity and memory access rate remain critical factors in STB design in view of the massive number of bytes which are transmitted to simultaneously communicate a large number of separate programs. This, of course, implies that each program will be represented by a relatively small fraction of the total amount of transmitted data even though the amount of data in that program remains large enough to require storage and most signal processing to be performed on data in compressed form. Therefore, filtering of data is necessary to limit the amount of data stored to that which is needed for support of desired functions of the STB.
For example, to extract data relevant to a single program, positive filtering is performed to match a stored table identification (TID) value against certain fields in each MPEG-2 compliant packet header so that packets which have a TID value which is mismatched to the program(s) currently being received can be discarded.
Not only is it necessary to filter data on the packet level before sending data to memory but it is also necessary to filter on the table section layer of the MPEG-2 compliant signal to prevent the memory from being filled with data and memory access time being consumed by storage of data which must eventually be parsed and discarded. An example of data which would be later discarded after being parsed would be data containing errors since the transmission medium may be “lossy” and errors in received data may commonly occur. Another example might be where more than one program was sent over a single channel and only one program was of interest.
More importantly, under the MPEG-2 convention, tables are used for non-audio/video data such as program schedule and navigation data or supplemental data such as sports statistics or subtitle data which may be displayed at the will of the user or even control data to control reception for limited access (e.g. pay-per-view) programming. In general more table data than is necessary is transmitted to be certain it is available when needed by the STB.
Due to substantially real-time processing demands, filters are generally implemented in hardware as an array of gates and registers for each filter. At a relatively high level of abstraction, a filter can be considered as registers respectively containing a filter value containing bit values against which data is to be compared, a mask value containing the bits to indicate the bits of interest and the data being filtered. The filter, mask and data registers are generally arranged as a block of limited length for hardware efficiency; containing four bytes which are set up by the signal application processor.
Outputs of these registers are applied to the inputs of gates and the outputs of the gates logically combined to either pass the data for storage or to discard it by blocking transfer for storage. Appropriate logic functions to be applied between the outputs of the registers to implement the filter functions are familiar and well-understood by those skilled in the art. Further, as disclosed in U.S. patent application Ser. No. 08/939,019, filed Sep. 26, 1997, assigned to the assignee of the present application and hereby fully incorporated by reference, filtering may be done in a plurality of stages with the result of one filtering process pointing to the next filtering process and/or data fields to be filtered in a linked list to be performed and thus effectively provides variable filtering length.
The most commonly filtered field within the section table layer syntax of MPEG-2 compliant data is the eight bit Table ID field since the table ID field is the most basic identifier for table sections and a hardware filter may be configured to send to memory all table sections having a particular PID value that also have a table ID field matching or partially matching a defined value. This is also an example of positive filtering where a match of one or more bits must be found for the data to be passed for storage. Such positive filtering with an effectively variable filter length provided by the above-incorporated application meets not only the applications program interface (API) definition of common middleware (e.g. between a low level operating system and an application program) implementations but extends the API to allow many programmable variations such as variable length filtering which can be critical for future applications such as internet protocol (IP) packet transmissions.
The MPEG-2 standard also provides for periodic transmission of information to support additional functions of the STB such as programming information to allow the user to navigate through available lists of programs. Such information is generally stored unconditionally to be available when needed consistent with a reduced repetition rate. However, it can be appreciated that many of these transmissions will be redundant and of substantial length and yet generally required shortly after the STB may be activated to begin reception. Therefore, such information may require transmission on a relatively frequent basis to be available when needed. It can also be appreciated that avoidance of storage except when such information was changed would require negative filtering (e.g. to suppress storage of information which is identical to that already stored) over long runs of digital data.
Unfortunately, while the filtering arrangement of the above-incorporated application would accommodate long runs of data, it is directed to only positive filtering. Prior to the present invention, no alternative exists for negative filtering of long runs of data other than registers and gate arrays sufficiently extensive to accommodate the maximum data bit string to be compared. Such an approach would require extensive hardware or present a substantial processing burden if implemented in software; neither of which is economically acceptable in a STB, particularly where a large plurality of filters must be implemented in separate hardware (to reduce overall set-up time) as is generally desirable in STBs. The absence of such filtering action results in the storage of data which must be later processed/parsed and discarded. Since no alternative exists, however, unconditional storage of such data increases required storage capacity in the STB and imposes a processing burden that cannot be avoided.